/*
 * 上海远境文化传媒有限公司 版权所有
 */
package ext.jpa;

import org.hibernate.annotations.GenericGenerator;
import play.db.jpa.GenericModel;
import play.db.jpa.JPABase;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

/**
 * 使用Snowflake主键的Model.
 *
 * 长度比较短；可以使用80年，即到2097年都可以正常生成.
 */
@MappedSuperclass
public class SnowflakeModel extends GenericModel {

    @Id
    @GeneratedValue(generator = "SnowflakeIdGenerator")
    @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "ext.jpa.snowflake.SnowflakeIDGenerator")
    public Long id;

    public Long getId() {
        return id;
    }

    @Override
    public Object _key() {
        return getId();
    }

    /**
     * 系统不允许删除.
     */
    @Override
    public <T extends JPABase> T delete() {
        return (T) this;
    }

}
